<?php
/**
 * Created by PhpStorm.
 * User: Administratorjing
 * Date: 2018/4/25/025
 * Time: 22:30
 */

namespace app\api\validate;


use app\lib\exception\ParameterException;

class OrderPlace extends BaseValidate
{
   protected $rule = [
       'products'=>'checkProducts'
   ];

   protected $singleRule = [
       'product_id'=>'require|isPositiveInteger',
       'count'=>'require|isPositiveInteger'
   ];

   protected function checkProducts($values)
   {
       if(!is_array($values)){
          throw new ParameterException(
            [
                'msg' =>'产品参数不正确'
            ]
          );
       }
       if(empty($values)){
           throw new ParameterException(
             [
                 'msg' => '商品列表不能为空'
             ]
           );
       }
       foreach ($values as $value)
       {
           $this->checkProduct($value);
       }
       return true;
   }

   protected function checkProduct($value)
   {
      //手动调用验证器方法
       $validate = new BaseValidate($this->singleRule);
       $result = $validate->check($value);
       if(!$result){
           throw new ParameterException([
               'msg' => '商品列表参数错误'
           ]);
       }
   }
}